package com.vcredit.bird.api;

import com.vcredit.bird.service.base.BirdResponse;
import com.vcredit.bird.vo.netcredit.BankcardInitParam;
import com.vcredit.bird.vo.netcredit.BankcardSubmitParam;
import com.vcredit.bird.vo.netcredit.EmailParam;
import com.vcredit.bird.vo.netcredit.LoginParam;
import com.vcredit.bird.vo.netcredit.QuestionFirstStepParam;
import com.vcredit.bird.vo.netcredit.QuestionSecondParam;
import com.vcredit.bird.vo.netcredit.RegisterFirstStepParam;
import com.vcredit.bird.vo.netcredit.RegisterSecondStepParam;
import com.vcredit.bird.vo.netcredit.RegisterThirdStepParam;
import com.vcredit.bird.vo.netcredit.ReportAllParam;
import com.vcredit.bird.vo.netcredit.ReportParam;
import com.vcredit.bird.vo.netcredit.ResultParam;
import com.vcredit.bird.vo.netcredit.SummaryParam;
import com.vcredit.bird.vo.netcredit.UnionpaySubmitParam;

/**
 * 
 * @ClassName: INetCreditService
 * @Description: 网络版征信查询
 * @author 李小强
 * @date 2017年4月19日
 *
 */
public interface INetCreditService {

	/**
	 * 
	 * @Title: init
	 * @Description: (网络版征信初始化)
	 * @return
	 * @throws Exception
	 *             参数
	 * @return Init 返回类型
	 * @throws
	 */
	BirdResponse netInit() throws Exception;

	/**
	 * 
	 * @Title: register1
	 * @Description: (央行互联网征信注册，第一步获取检验证件与姓名)
	 * @param param
	 * @return
	 * @throws Exception
	 *             参数
	 * @return BankCreditResult 返回类型
	 * @throws
	 */
	BirdResponse netRegister1(RegisterFirstStepParam param) throws Exception;

	/**
	 * 
	 * @Title: register2
	 * @Description: (央行互联网征信注册，第二步问题验证)
	 * @param param
	 * @return
	 * @throws Exception
	 *             参数
	 * @return BankCreditResult 返回类型
	 * @throws
	 */
	BirdResponse netRegister2(RegisterSecondStepParam param) throws Exception;

	/***
	 * 
	 * @Title: register3
	 * @Description: (央行互联网征信注册，第三步录入补充注册信息)
	 * @param param
	 * @return
	 * @throws Exception
	 *             参数
	 * @return BankCreditResult 返回类型
	 * @throws
	 */
	BirdResponse netRegister3(RegisterThirdStepParam param) throws Exception;

	/**
	 * 
	 * @Title: login
	 * @Description: (央行互联网征信查询登录)
	 * @param @param param
	 * @param @return
	 * @param @throws Exception 参数
	 * @return BankCreditResult 返回类型
	 * @throws
	 */
	BirdResponse netLogin(LoginParam param) throws Exception;
	
	
	/**
	 * 
	* @Title: apply1
	* @Description: (央行互联网征信,信用信息查询申请,第一步，获取问题验证的问题列表)
	* @param param
	* @return
	* @throws Exception    参数
	* @return BankCreditResult    返回类型
	* @throws
	 */
	BirdResponse netApply1(QuestionFirstStepParam param) throws Exception;

	/**
	 * 
	* @Title: apply2
	* @Description: (央行互联网征信,信用信息查询申请,第二步，提交问题验证的验证后列表)
	* @param param
	* @return
	* @throws Exception    参数
	* @return BankCreditResult    返回类型
	* @throws
	 */
	BirdResponse netApply2(QuestionSecondParam param) throws Exception;

	/***
	 * 
	* @Title: result
	* @Description: (央行互联网征信,信用信息查询申请,查询申请状态)
	* @param param
	* @return
	* @throws Exception    参数
	* @return BankCreditResult    返回类型
	* @throws
	 */
	BirdResponse netResult(ResultParam param) throws Exception;

	/**
	 * 
	* @Title: report
	* @Description: (央行互联网征信,获取报告)
	* @param param
	* @return
	* @throws Exception    参数
	* @return BankCreditResult    返回类型
	* @throws
	 */
	BirdResponse netReport(ReportParam param) throws Exception;

	/**
	 * 
	* @Title: summary
	* @Description: (查询征信统计数据)
	* @param @param param
	* @param @return
	* @param @throws Exception    参数
	* @return BankCreditResult    返回类型
	* @throws
	 */
	BirdResponse summary(SummaryParam param) throws Exception;

	BirdResponse recorddtl(String reportId) throws Exception;

	/***
	 * 
	* @Title: bankcardInit
	* @Description: (银行卡认证，第一步，获取认证页面)
	* @param param
	* @return
	* @throws Exception    参数
	* @return BankcardInit    返回类型
	* @throws
	 */
	BirdResponse netBankcardInit(BankcardInitParam param) throws Exception;

	/***
	 * 
	* @Title: bankcardSubmit
	* @Description: (信用信息查询申请，银行卡认证，最后一步，提交银联认证码)
	* @param param
	* @return
	* @throws Exception    参数
	* @return BankCreditResult    返回类型
	* @throws
	 */
	BirdResponse netBankcardSubmit(BankcardSubmitParam param) throws Exception;


	/**
	 * 
	* @Title: unionpaySubmit
	* @Description: (获取银联认证码，第三步，提交信息)
	* @param @param param
	* @param @return
	* @param @throws Exception    参数
	* @return BankCreditResult    返回类型
	* @throws
	 */
	BirdResponse netUnionpaySubmit(UnionpaySubmitParam param) throws Exception;

	/**
	 * 
	* @Title: reportAll
	* @Description: TODO(獲取用戶征信報告)
	* @param @param param
	* @param @return
	* @param @throws Exception    参数
	* @return BirdResponse    返回类型
	* @throws
	 */
	BirdResponse reportAll(ReportAllParam param) throws Exception;
	
	/**
	 * 
	* @Title: reportsn
	* @Description: TODO(獲取用戶征信報告)
	* @param @param reportSn
	* @param @return
	* @param @throws Exception    参数
	* @return BirdResponse    返回类型
	* @throws
	 */
	BirdResponse reportsn(String reportSn) throws Exception;
	
	
	void netSendReport(EmailParam param) throws Exception;

}
